package com.itdachang.design.behavioral.interpreter;

import java.util.HashSet;
import java.util.Set;

/**
 * @author gcq
 * @create 2022-02-15
 */
public class Area {
    /**
     * 城市
     */
    Set<String> city = new HashSet<>();

    /**
     * 人员类型
     */
    Set<String> type = new HashSet<>();

    /**
     * 读卡器 表达式解析器
     */
    IDCardExpression idCardReader;

    public Area() {
        city.add("武汉市");
        city.add("上海市");

        type.add("医生");
        type.add("老人");
        type.add("儿童");

        // 最小解析
        TerminalExpression city =
                    new TerminalExpression(this.city, ":");
        TerminalExpression type =
                new TerminalExpression(this.type, "-");

        idCardReader = new OrExpression(city, type);
    }

    /**
     * 传入表达式 判断当前表达式是否指定为免费人群
     * @param expression 表达式
     */
    void getTicket(String expression) {
        boolean interpret = idCardReader.interpret(expression);
        if(interpret) {
            System.out.println("恭喜你...免票进入...");
        } else {
            System.out.println("对不起...2元购票进入...");
        }
    }
}